/**
 * 原生对象的扩展方法
 */

/**
 * Promise（webpack构建后的代码竟然用了Promise，所以在此做兼容）
 */
if(!window.Promise){
    window.Promise=require('tf-utils/class/Promise').default;
}

/**
 * 兼容数组find方法
 */
if (typeof Array.prototype.find !== 'function') {
    Array.prototype.find = function (callback) {
        let item;
        for (let i = 0; i < this.length; ++i) {
            if(callback(this[i], i, this)){
                item=this[i];
                break;
            }
        }
        return item;
    };
}
if (typeof Array.prototype.findIndex !== 'function') {
    Array.prototype.findIndex = function (callback) {
        let index=-1;
        for (let i = 0; i < this.length; ++i) {
            if(callback(this[i], i, this)){
                index=i;
                break;
            }
        }
        return index;
    };
}

/**
 * 日期格式化
 * @param pattern
 * @returns {*}
 */
Date.prototype.format=function(pattern){
    var fix=function(t) {
        if (t < 10)
            t = '0' + t;
        return t;
    };
    var x=this;
    var y = x.getFullYear(),
        M = fix(x.getMonth() + 1),
        d = fix(x.getDate()),
        H = fix(x.getHours()),
        m = fix(x.getMinutes()),
        s = fix(x.getSeconds());
    return pattern.replace('yyyy', y).replace('MM', M).replace('dd', d).replace('HH', H).replace('mm', m).replace('ss', s);
};

/**
 * 时间格式化
 * @returns {*} 返回 H:m、昨天 H:m、M月d日 H:m
 */
Date.prototype.shortTime=function(){
    var date=this;
    var now=new Date();
    var period=now.getTime()-date.getTime();
    var periodMin=period/60000; //转化为分钟单位
    //10分钟内的
    if(periodMin<=10){
        if(periodMin<1){
            //1分钟内
            return '刚刚';
        }else{
            return Math.floor(periodMin)+'分钟前';
        }
    }
    var time=date.getHours()+':'+(date.getMinutes()<10?'0':'')+date.getMinutes();
    var prefix;
    if(date.getFullYear()==now.getFullYear()&&date.getMonth()==now.getMonth()&&date.getDate()==now.getDate()){
        //今天
        prefix = '';
    }else if(new Date(date.getFullYear(), date.getMonth(), date.getDate()+1).getTime()==new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime()){
        //昨天
        prefix = '昨天 ';
    }else{
        prefix = (date.getFullYear()!=now.getFullYear()?date.getFullYear()+'年':'')+(date.getMonth()+1)+'月'+date.getDate()+'日 ';
    }
    return prefix+time;
};